// new做了些什么
// 内存中创建一个空对象
// 让this指向这个对象,执行构造函数中的代码
// 设置原型链
// 返回这个新对象(所以构造函数不需要return)

function myNew() {
  var obj = {}
  var Constructor =[].shift.call(arguments)
  var result = Constructor.apply(obj,arguments)
  obj.__proto__ = Constructor.prototype
  return typeof result === 'object' ? result : obj
}